

//2537.统计好子数组的数目
class Solution {
public:
    long long countGood(vector<int>& nums, int k) {
        //求临界区间：有k对满足情况
        unordered_map<int,int> mm;
        int n=nums.size();
        int left=0,differ=0;
        long long ret=0;
        for(int right=0;right<n;right++)
        {
            differ+=mm[nums[right]];   //统计该元素插入后新的子数组
            mm[nums[right]]++;   //入窗口
            while(differ>=k)
            {
                mm[nums[left]]--;     //出窗口
                differ-=mm[nums[left]]; 
                left++;
            }
            //此时恰好不满足
            ret+=left;   //更新答案
        }
        return ret;
    }
};